<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    
</head>
<body>
    <pre>
        表单验证：
            为了减轻服务器压力
            合理处理格式校验
        
        表单校验的思路步骤；
        1、获取表单元素的值
              采用DOM操作
        2、采用合适的方式验证内容，给出验证结果
              String对象方法、Math对象方法、Date对象方法等
              正则表达式
        3、合理的提示

        正则表达式校验：
            校验格式的，不仅仅是校验内容。
        语法：
            以 /^ 开始  以 $/ 结束  中间部分写格式
            例如： var reg = /^$/  严格匹配
                   var reg = //    弱匹配
        格式校验：
            1）精确匹配[直接写内容，做内容校验]
                /^内容$/      例：/^a$/
            2）范围匹配
                []表示在范围内只取一个字符内容
                如果范围是连续内容，可以通过-连接首尾表示所有内容
                /^[内容]$/    例：/^[abcdefghijklmnopqrstuvwxyz]$/
                                  /^[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]$/
                                 /^[a-z]$/ /^[0-9]$/       
            3）特殊符号匹配
                {m,n}    表示离表达式左边紧挨着最近的一个格式匹配至少m个，最多n个
                {m,}     匹配至少m个，最多不限
                {m}      只匹配m个
                             例：/^[a-z][0-9]{3,5}$/
                +        等同{1,}
                *        等同{0,}
                ?        等同{0,1}
                             例：/^[a-z][0-9]+$/
                \d       等同[0-9]
                \w       等同[a-z0-9A-Z_]     
                .        除换行符以外的任意字符  \. 表示一个.   [.]
                
                [^]      除指定内容外的任意字符格式
                \W       匹配非数字、字母、下划线
                \D       匹配非数字
                \s       匹配空白字符（空格、换行）
                \S       匹配非空白字符
                \n       匹配换行符
            4）正则表达式中允许添加修饰符
                修饰符：对正则表达式做二次功能要求
                语法：
                     //修饰符
                    注意：使用弱匹配+修饰符。

                修饰符包括：
                    i   忽略大小写的格式匹配
                    g   全局匹配[允许格式匹配多次，不是匹配一次就结束]
                    m   匹配多行

        验证方法：
            方式一：正则表达式对象.test(值)   格式匹配上返回true。否则返回false
            方式二：正则表达式对象.exec(值)   格式匹配上，返回有值的数组。否则返回null

        综合应用：
        1）邮箱  X@X.X
                /^\w+@\w+[.]\w+$/
        2）身份证 18数字  17数字xX
                /^\d{18}|\d{17}[xX]$/
                /^\d{18}\$/ ||  /^\d{17}[xX]$/
        3）手机号码 
                /^1[3456789]\d{9}$/
        4）日期格式  yyyy-MM-dd
                /^\d{4}-\d{2}-\d{2}$/

        注意：
            正则表达式不需要引号引起来
            写在中间的内容全都是格式
            区分英文/中文半角和全角符号，区分大小写
        
         String类中可以支持正则的方法: 通过正则表达式获取符合格式的字符串
            search		检索与正则表达式相匹配的值
            match		找到一个或多个正则表达式的匹配
            replace		替换与正则表达式匹配的子串
            split	    返回一个字符串数组

        /*search()方法-使用正则表达式来检索字符串中的kgc*/
        var str="hello kgc";
        console.log(str.search(/kgc/));  console.log(str.search(/KGC/));  console.log(str.search(/KGC/i)); 
        /*match()方法-使用正则表达式来检索字符串中的所有数字*/
        var str="1 and 2 and 3";
        console.log(str.match(/\d/));
        console.log(str.match(/kgc/));
        console.log(str.match(/\d/g));
        /*replace()方法-使用 "kgc" 替换字符串中的 "huyang"*/
        var str="hello huyang";
        console.log(str.replace(/huyang/,"kgc"));
        var str="hello huyang, How are you?huyang";
        console.log(str.replace(/huyang/g,"kgc"));
        /*split()方法-把单词分割为字母*/
        console.log("hello".split(""));
        console.log("hello".split("",3));
    
    </pre>

    <input id="txt1" type="text" onblur="check()"/><span id="ts"></span>

    <script type="text/javascript" src="js/chapter6.js"></script>
</body>
</html>